package com.probox.common.entity.service.product;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.probox.product.api.domain.ProductSkuVo;
import com.probox.product.api.domain.SaleProductVo;
import com.probox.common.entity.domain.product.ProductSku;
import com.probox.common.entity.domain.product.vo.ProductSaveVo;
import com.probox.common.entity.domain.product.vo.SkuSaveVo;

/**
 * 产品SKU信息Service接口
 *
 *
 * @date 2021-06-01
 */
public interface IProductSkuService extends IService<ProductSku> {


    /**
     * 销售SKU
     * @param vo
     * @return
     */
    public int saleSku(SaleProductVo vo);

    /**
     * 查询产品SKU信息
     *
     * @param skuUid 产品SKU信息ID
     * @return 产品SKU信息
     */
    public ProductSku selectProductsSkuById(Long skuUid);


    /**
     * 查询产品SKU信息列表
     *
     * @param productUid 商品ID
     * @return 产品SKU信息
     */
    public List<ProductSku> queryList(Long productUid);

    /**
     * 查询上架的SKU信息
     * @param productUid
     * @return
     */
    public List<ProductSku> getOnlineSkuList(Long productUid);


    /**
     * 新增产品SKU信息
     *
     * @param productSaveVo 商品信息vo
     * @return 总库存
     */
    public Long insertProductsSku(ProductSaveVo productSaveVo);

    /**
     * 修改产品SKU信息
     *
     * @param productSaveVo 商品信息vo
     * @return 结果
     */
    public Long updateProductsSku(ProductSaveVo productSaveVo);

    /**
     * 查询详情的sku
     *
     * @param productSkus sku信息
     * @return
     */
    public List<SkuSaveVo> getSkuSaveVoList(List<ProductSku> productSkus);


    /**
     *  清除sku
     * @param productSaveVo 商品信息vo
     * @param productUids 商品uid集合
     */
    public void updateSkuStatus(ProductSaveVo productSaveVo, Long [] productUids);

    /**
     * 修改品SKU信息
     *
     * @param productSku 产品SKU信息
     * @return 产品SKU信息
     */
    public void updateProductsSku(ProductSku productSku);

    /**
     * api 获取商品sku详细信息
     * @param productUid
     * @param skuVo
     * @return
     */
    public ProductSkuVo getSkuItemVo(Long productUid, ProductSkuVo skuVo);
}
